// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

import ListClass from '@api/linkage/model/RuleQueryReq'
import BaseClass from '@api/linkage/model/LinkageRuleDto'
import API from './API'
import state from '@admin/views/System/IOT/IOTList/store/state'

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API: {
    ...API,
    getIOT: state.API.getOne,
  },

  /**
   * 映射
   */
  MAP: {
    WORD: '规则', // 词语
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 全部
     */
    MATCH: [
      [1, '全部设备'],
      [2, '指定设备'],
    ],

    /**
     * 类型
     */
    TYPE: [
      [1, `设备${CORE.MAP.ALARM}`],
      [2, '设备事件'],
    ],

    /**
     * 联动动作
     */
    ACTION: [
      [1, '设备动作'],
      [2, '视频弹窗'],
      [3, '短信推送'],
    ],
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, BaseClass, {
    //
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setOne() 重置时使用
   * 4. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    status: 1, // 默认启用

    deviceCategory: undefined, // 设备类别编码
    deviceCategoryId: '', // 设备类别 ID
    deviceCategoryName: '', // 设备类别名称

    deviceType: undefined, // 设备类型编码
    deviceTypeId: '', // 设备类型 ID
    deviceTypeName: '', // 设备类型名称

    action: [], // 动作列表
    actionDevice: 2, // 设备动作，默认不选中
    actionVideoPop: 2, // 视频弹窗，默认不选中
    actionSms: 2, // 短信推送，默认不选中

    actionDeviceCategory: undefined, // 设备动作联动的设备类别 ID
    actionDeviceType: undefined, // 设备动作联动的设备类型 ID
    actionDeviceArea: undefined, // 设备动作联动的设备区域 ID
    actionDeviceId: undefined, // 设备动作联动的设备 ID
    actionDeviceName: undefined, // 设备动作联动的设备名称
    actionDeviceFunction: undefined, //  设备动作联动的设备动作编码
  }),
}
